/********************************************
 * MODUL
 * 
 * Name: TCP_SOCKET_HELPER
 * 
 * Zweck: Fasst die Funktionen zusammen, die zum Aufbau einer TCP Socket Verbindung dienen
 * 
 * Autor(en): Simon Hinderhofer, Robert Lehmann, Benjamin Reiner, TIT08
 * 
 * Quellen: Diese Funktionen wurden frei nach den folgenden Quelle erstellt:
 *	    http://www.linuxhowtos.org/C_C++/socket.htm
 * 	    http://www.cs.cf.ac.uk/Dave/C/node28.html
 * 	    http://www.pc-adviser.de/socket_programmierung.html#tricks
 * 	    Folien der Vorlesung
 * 
 ********************************************/
#ifndef TCP_SOCKET_HELPER_H
#define TCP_SOCKET_HELPER_H


struct tcp_transmit_struct
{
  int flag;
  int byte_count;
};

int server_create_tcp_socket(int socket_port);
int server_accept_tcp_socket(int server_socket);

int server_create_tcp_ipc_socket(char* socket_adress);
int server_accept_tcp_ipc_socket(int server_socket);

int client_create_tcp_socket(char* server_name, int server_port);

int client_create_tcp_ipc_socket(char* server_name);

char* read_tcp_socket(int client_socket);
int write_tcp_socket(int server_socket, char message[]);
struct tcp_transmit_struct transmit_tcp_socket(int read_socket, int write_socket, FILE* file, int timeout, int counter_client, int counter_server, char server_host[], unsigned short server_port);
void close_tcp_socket(int socket);


#endif
